
select bf1.codice_contratto,
       to_char(bf2.data_fine_c) data_lettura,
       CASE WHEN 
        ( select distinct MIN(codice_modello_contatore) 
       from db5.bollette_contatori@pgu3 bc where bc.codice_gestione = bf1.codice_gestione 
                                  and bc.codice_servizio = BF1.codice_servizio
                                  and bc.codice_contratto = bf1.codice_contratto
                                  and bc.codice_bolletta = bf1.codice_bolletta
                                  and bc.tipo_misuratore like 'C%'
                                  GROUP BY BC.CODICE_CONTRATTO,BC.CODICE_BOLLETTA) LIKE ('M%') THEN 'F3' ELSE 'FU' END FASCE,
                                  
       (select distinct MIN(matricola_contatore) 
       from db5.bollette_contatori@pgu3 bc where bc.codice_gestione = bf1.codice_gestione 
                                  and bc.codice_servizio = BF1.codice_servizio
                                  and bc.codice_contratto = bf1.codice_contratto
                                  and bc.codice_bolletta = bf1.codice_bolletta
                                  and bc.tipo_misuratore like 'C%'
                                  GROUP BY BC.CODICE_CONTRATTO,BC.CODICE_BOLLETTA) matricola_contatore_CONSUMO,
      CASE WHEN 
        (select distinct MIN(codice_modello_contatore) 
       from db5.bollette_contatori@pgu3 bc where bc.codice_gestione = bf1.codice_gestione 
                                  and bc.codice_servizio = BF1.codice_servizio
                                  and bc.codice_contratto = bf1.codice_contratto
                                  and bc.codice_bolletta = bf1.codice_bolletta
                                  and bc.tipo_misuratore like 'R%') NOT IN ('M2AT','M2OT','M3AC','M3OC') THEN
                                  
                                  
                                                          
      (select distinct MIN(matricola_contatore) 
       from db5.bollette_contatori@pgu3 bc where bc.codice_gestione = bf1.codice_gestione 
                                  and bc.codice_servizio = BF1.codice_servizio
                                  and bc.codice_contratto = bf1.codice_contratto
                                  and bc.codice_bolletta = bf1.codice_bolletta
                                  and bc.tipo_misuratore like 'R%') END matricola_contatore_REATTIVA,
                                  
                                  
                                  
         CASE WHEN                          
        ( select distinct MIN(codice_modello_contatore) 
       from db5.bollette_contatori@pgu3 bc where bc.codice_gestione = bf1.codice_gestione 
                                  and bc.codice_servizio = BF1.codice_servizio
                                  and bc.codice_contratto = bf1.codice_contratto
                                  and bc.codice_bolletta = bf1.codice_bolletta
                                  and bc.tipo_misuratore like 'M%') NOT IN ('M2AT','M2OT','M3AC','M3OC','M3AR','M3OR') THEN                                
       ( select distinct MIN(matricola_contatore) 
       from db5.bollette_contatori@pgu3 bc where bc.codice_gestione = bf1.codice_gestione 
                                  and bc.codice_servizio = BF1.codice_servizio
                                  and bc.codice_contratto = bf1.codice_contratto
                                  and bc.codice_bolletta = bf1.codice_bolletta
                                  and bc.tipo_misuratore like 'M%') END matricola_contatore_POTENZA,
        
                                  
       bf2.lettura_fine_c,bf2.consumo_c,
       ls.lettura_fine_c2,ls.consumo_c2,
       ls.lettura_fine_c3,ls.consumo_c3,
       ls.lettura_fine_r1,ls.consumo_r1,
       ls.lettura_fine_r2,ls.consumo_r2,
       ls.lettura_fine_r3,ls.consumo_r3,
       ls.lettura_fine_m1,ls.indice_massima_1,
       ls.lettura_fine_m2,ls.indice_massima_2,
       ls.lettura_fine_m3,ls.indice_massima_3
from
(
select bf.codice_gestione,bf.codice_servizio,bf.codice_contratto,max(bf.codice_bolletta) codice_bolletta
 from db5.bollette_forniture@PGU3 bf,db5.CONTRATTI@PGU3 CO,db5.bollette@pgu3 bo
 where bf.codice_gestione='UNRG'
 and bf.codice_servizio = 'E'
 and codice_ac ='C'
 AND CO.codice_gestione='UNRG'  
 and CO.codice_servizio = 'E'    
 AND CO.CODICE_CONTRATTO = BF.CODICE_CONTRATTO
 AND CO.STATO_CONTRATTO = 'A'
 AND CO.codice_gestione='UNRG'
 and bo.codice_bolletta = bf.codice_bolletta
 and bo.stato_bolletta = 'F'
 
 
  group by 
 bf.codice_gestione,bf.codice_servizio,bf.codice_contratto) bf1,
 db5.bollette_forniture@PGU3 bf2,db5.bollette_forniture_ls@PGU3 ls,db5.forniture@pgu3 fo
 where 
 --bf1.data_lettura = bf2.data_fine_c
  bf2.codice_gestione = bf1.codice_gestione
 and ls.codice_gestione(+)= bf1.codice_gestione
 and bf2.codice_servizio = bf1.codice_servizio 
 and ls.codice_servizio(+) = bf1.codice_servizio 
 and bf2.codice_bolletta=bf1.codice_bolletta
 and ls.codice_bolletta(+) = bf1.codice_bolletta
 and bf2.codice_contratto = bf1.codice_contratto
 and ls.codice_contratto(+) = bf1.codice_contratto
 
 and fo.codice_gestione = bf1.codice_gestione
 and fo.codice_servizio = bf1.codice_servizio 
 and fo.codice_contratto = bf1.codice_contratto--)D
 --and fo.codice_contratto in(8002405)







